<?php

namespace Controller;

class RegisterController{	
		
	/**
	 * Hanterar registering av nya användare
	 * @param Objekt $database  ett databasobjekt
	 * @param bool $loggedin  om användaren är inloggad eller ej
	 * @param bool $superuser om användaren är superuser eller ej
	 */
	public function DoControll($database, $loggedin, $superUser){
	
		$RegisterView = new \View\RegisterView();
		$RegisterHandler = new \Model\RegisterHandler($database);
			
		// Hämtar de inskriva användarnamnet och lösenordet
		$regusername = $RegisterView->GetUserName();
		$regpassword = $RegisterView->GetPassword();
		
		$output;

		// En array som ska innehålla eventuella meddelanden
		$messageArray = array();
		
		$message = $RegisterView->GenerateMessageOutput($messageArray);
		
		// Om det finns ett meddelande skall detta skrivas ut
		if($RegisterHandler->UserMessageExists() != false) {						
			$message = $RegisterView->GenerateMessageOutput($RegisterHandler->UserMessageExists());
			$RegisterHandler->ClearUserMessage(); 
		}
		
		// Kontrollerar om användaren är inloggad
		if($loggedin == true && $superUser == true){			
				
			// Ser till att mitt registreringsformulär blir utskrivet
			$output = $RegisterView->CreateRegisterForm();
			
				// Kontrollerar om användaren har klickat på registrera-knappen	
			if($RegisterView->TriedToRegister()){	

				// Kontrollerar om användarnamnet redan finns
				if($RegisterHandler->DoesUserExist($regusername)){		

					$messageArray[] = \View\RegisterView::USER_EXISTS;
				}			
				// Kontrollerar om användarnamnet är tomt
				if(empty($regusername)){

					$messageArray[] = \View\RegisterView::EMPTY_USERNAME;
				}				
				// Kontrollerar om lösenordet är av korrekt format och att samma lösenord är inmatad två gånger
				if ($regpassword == false){

					$messageArray[] = \View\RegisterView::PASSWORD_NOT_ACCEPTED;
				}				
				// Om inga fel har skrivits in registreras användaren
				if(empty($messageArray)){
					$register = $RegisterHandler->RegisterUser($regusername, $regpassword);

					$messageArray[] = \View\RegisterView::SUCCESS;
				}
				$RegisterHandler->SetUserMessage($messageArray);
				$RegisterHandler->RedirectToSelf();
			}			
			$html = $message .= $output;			
			return $html;		
		}	
		return $output;			
	}	
}		